package com.mycompany.inventory.pojo;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import org.zkoss.bind.annotation.DependsOn;

public class Purchase {
	private String Id;
	private String orderId;
	private Vendor vendor;
	private Date purchaseDate;
	private String status;
	private double paid;
	private String remark;
	private Date datePaid;
	private Date returnDate;
	private Currency currency;
	private TaxScheme taxScheme;
	private PaymentTerm paymentTerm;
	private PaymentMethod paymentMethod;
	private Inventory inventory;
	private Carrier carrier;
	private Date reqShipDate;
	private String freight;
	private String remarkReceive;
	private String remarkPayment;
	private String remarkReturn;
	private double refund;
	private String remarkUnstock;
	private double fee;
	private Date dueDate;
	private double total;
	private double balance;
	
	public Purchase() {
		
	}	

	public Purchase(String Id, String orderId, Vendor vendor, Date purchaseDate, String status, double paid, String remark, Date datePaid, Date returnDate,
			Currency currency, TaxScheme taxScheme, PaymentTerm paymentTerm, PaymentMethod paymentMethod, Inventory inventory, Carrier carrier, Date shipDate, String freight,
			String remarkReceive, String remarkPayment, String remarkReturn, double refund, String remarkUnstock, double fee, Date dueDate) {
		this.Id = Id;
		this.orderId = orderId;
		this.vendor = vendor;
		this.purchaseDate = purchaseDate;
		this.status = status;
		this.paid = paid;
		this.remark = remark;
		this.datePaid = datePaid;
		this.returnDate = returnDate;
		this.currency = currency;
		this.taxScheme = taxScheme;
		this.paymentTerm = paymentTerm;
		this.paymentMethod = paymentMethod;
		this.inventory = inventory;
		this.carrier =carrier;
		this.reqShipDate = shipDate;
		this.freight = freight;
		this.remarkReceive = remarkReceive;
		this.remarkPayment = remarkPayment;
		this.remarkReturn = remarkReturn;
		this.refund = refund;
		this.remarkUnstock = remarkUnstock;
		this.fee = fee;
		this.dueDate = dueDate;
	}

	/**
	 * @return the id
	 */
	public String getId() {
		return Id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(String id) {
		Id = id;
	}	
	
	/**
	 * @return the orderId
	 */
	public String getOrderId() {
		return orderId;
	}

	/**
	 * @param orderId the orderId to set
	 */
	public void setOrderId(String orderId) {
		this.orderId = orderId;
	}

	/**
	 * @return the vendor
	 */
	public Vendor getVendor() {
		return vendor;
	}

	/**
	 * @param vendor the vendor to set
	 */
	public void setVendor(Vendor vendor) {
		this.vendor = vendor;
	}

	/**
	 * @return the purchaseDate
	 */
	public Date getPurchaseDate() {
		return purchaseDate;
	}

	/**
	 * @param purchaseDate the purchaseDate to set
	 */
	public void setPurchaseDate(Date purchaseDate) {
		this.purchaseDate = purchaseDate;
	}

	/**
	 * @return the status
	 */
	public String getStatus() {
		return status;
	}

	/**
	 * @param status the status to set
	 */
	public void setStatus(String status) {
		this.status = status;
	}

	/**
	 * @return the paid
	 */
	public double getPaid() {
		return paid;
	}

	/**
	 * @param paid the paid to set
	 */
	public void setPaid(double paid) {
		this.paid = paid;
	}

	/**
	 * @return the remark
	 */
	public String getRemark() {
		return remark;
	}

	/**
	 * @param remark the remark to set
	 */
	public void setRemark(String remark) {
		this.remark = remark;
	}

	/**
	 * @return the datePaid
	 */
	public Date getDatePaid() {
		return datePaid;
	}

	/**
	 * @param datePaid the datePaid to set
	 */
	public void setDatePaid(Date datePaid) {
		this.datePaid = datePaid;
	}

	/**
	 * @return the returnDate
	 */
	public Date getReturnDate() {
		return returnDate;
	}

	/**
	 * @param returnDate the returnDate to set
	 */
	public void setReturnDate(Date returnDate) {
		this.returnDate = returnDate;
	}

	/**
	 * @return the currency
	 */
	public Currency getCurrency() {
		return currency;
	}

	/**
	 * @param currency the currency to set
	 */
	public void setCurrency(Currency currency) {
		this.currency = currency;
	}

	/**
	 * @return the taxScheme
	 */
	public TaxScheme getTaxScheme() {
		return taxScheme;
	}

	/**
	 * @param taxScheme the taxScheme to set
	 */
	public void setTaxScheme(TaxScheme taxScheme) {
		this.taxScheme = taxScheme;
	}

	/**
	 * @return the paymentTerm
	 */
	public PaymentTerm getPaymentTerm() {
		return paymentTerm;
	}

	/**
	 * @param paymentTerm the paymentTerm to set
	 */
	public void setPaymentTerm(PaymentTerm paymentTerm) {
		this.paymentTerm = paymentTerm;
	}

	/**
	 * @return the paymentMethod
	 */
	public PaymentMethod getPaymentMethod() {
		return paymentMethod;
	}

	/**
	 * @param paymentMethod the paymentMethod to set
	 */
	public void setPaymentMethod(PaymentMethod paymentMethod) {
		this.paymentMethod = paymentMethod;
	}

	/**
	 * @return the inventory
	 */
	public Inventory getInventory() {
		return inventory;
	}

	/**
	 * @param inventory the inventory to set
	 */
	public void setInventory(Inventory inventory) {
		this.inventory = inventory;
	}

	/**
	 * @return the carrier
	 */
	public Carrier getCarrier() {
		return carrier;
	}

	/**
	 * @param carrier the carrier to set
	 */
	public void setCarrier(Carrier carrier) {
		this.carrier = carrier;
	}

	/**
	 * @return the reqShipDate
	 */
	public Date getReqShipDate() {
		return reqShipDate;
	}

	/**
	 * @param reqShipDate the reqShipDate to set
	 */
	public void setReqShipDate(Date reqShipDate) {
		this.reqShipDate = reqShipDate;
	}

	/**
	 * @return the freight
	 */
	public String getFreight() {
		return freight;
	}

	/**
	 * @param freight the freight to set
	 */
	public void setFreight(String freight) {
		this.freight = freight;
	}

	/**
	 * @return the remarkReceive
	 */
	public String getRemarkReceive() {
		return remarkReceive;
	}

	/**
	 * @param remarkReceive the remarkReceive to set
	 */
	public void setRemarkReceive(String remarkReceive) {
		this.remarkReceive = remarkReceive;
	}

	/**
	 * @return the remarkPayment
	 */
	public String getRemarkPayment() {
		return remarkPayment;
	}

	/**
	 * @param remarkPayment the remarkPayment to set
	 */
	public void setRemarkPayment(String remarkPayment) {
		this.remarkPayment = remarkPayment;
	}

	/**
	 * @return the remarkReturn
	 */
	public String getRemarkReturn() {
		return remarkReturn;
	}

	/**
	 * @param remarkReturn the remarkReturn to set
	 */
	public void setRemarkReturn(String remarkReturn) {
		this.remarkReturn = remarkReturn;
	}

	/**
	 * @return the refund
	 */
	public double getRefund() {
		return refund;
	}

	/**
	 * @param refund the refund to set
	 */
	public void setRefund(double refund) {
		this.refund = refund;
	}

	/**
	 * @return the remarkUnstock
	 */
	public String getRemarkUnstock() {
		return remarkUnstock;
	}

	/**
	 * @param remarkUnstock the remarkUnstock to set
	 */
	public void setRemarkUnstock(String remarkUnstock) {
		this.remarkUnstock = remarkUnstock;
	}

	/**
	 * @return the fee
	 */
	public double getFee() {
		return fee;
	}

	/**
	 * @param fee the fee to set
	 */
	public void setFee(double fee) {
		this.fee = fee;
	}

	/**
	 * @return the dueDate
	 */
	public Date getDueDate() {
		return dueDate;
	}

	/**
	 * @param dueDate the dueDate to set
	 */
	public void setDueDate(Date dueDate) {
		this.dueDate = dueDate;
	}

	/**
	 * @return the total
	 */
	public double getTotal() {
		return total;
	}

	/**
	 * @param total the total to set
	 */
	public void setTotal(double total) {
		this.total = total;
	}

	/**
	 * @return the balance
	 */
	@DependsOn({"total","paid"})
	public double getBalance() {
		return total - paid;
	}

	/**
	 * @param balance the balance to set
	 */
	public void setBalance(double balance) {
		this.balance = balance;
	}
	
}
